<?php
App::uses('AppController', 'Controller');
/**
 * Users Controller
 *
 * @property User $User
 */
class UsersController extends AppController {

	public function beforeFilter() {
			#$this->Auth->authenticate = ClassRegistry::init('User');
		  parent::beforeFilter();
			$this->Auth->allow();
			$this->Auth->deny(array('view'));
	}

	public function login() {
			$this->layout = 'frontend';
		  if ($this->request->is('post')) {
		      if ($this->Auth->login()) {
		          $this->redirect($this->Auth->redirect());
		      } else {
		          $this->Session->setFlash(__('Invalid username or password, try again'));
		      }
		  }
	}

	public function logout() {
		  $this->redirect($this->Auth->logout());
	}

 	public function opauth_complete() {
	  $this->redirect("/");
  }

	function encryptPassword($password, $salt){
		$password = $password.'happylight'.$salt;
		$password = sha1($password);
		return $password;
	}

/**
 * index method
 *
 * @return void
 */
	public function index() {
		$this->User->recursive = 0;
		$this->set('users', $this->paginate());
	}

/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function view($id = null) {
		$this->User->id = $id;
		if (!$this->User->exists()) {
			throw new NotFoundException(__('Invalid user'));
		}
		$this->set('user', $this->User->read(null, $id));
	}

/**
 * add method
 *
 * @return void
 */
	public function add() {
		$this->layout = 'frontend';
		if ($this->request->is('post')) {
			$this->User->create();
			$salt = sha1(time().rand());
			#$this->request->data['User']['password'] = $this->encryptPassword($this->request->data['User']['password'], $salt);
			#$this->request->data['User']['salt']  = $salt;
			if ($this->User->save($this->request->data)) {
				$this->Session->setFlash(__('The user has been saved'));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
			}
		}
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit($id = null) {
		$this->User->id = $id;
		if (!$this->User->exists()) {
			throw new NotFoundException(__('Invalid user'));
		}
		if ($this->request->is('post') || $this->request->is('put')) {
			if ($this->User->save($this->request->data)) {
				$this->Session->setFlash(__('The user has been saved'));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
			}
		} else {
			$this->request->data = $this->User->read(null, $id);
		}
	}

/**
 * delete method
 *
 * @throws MethodNotAllowedException
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete($id = null) {
		if (!$this->request->is('post')) {
			throw new MethodNotAllowedException();
		}
		$this->User->id = $id;
		if (!$this->User->exists()) {
			throw new NotFoundException(__('Invalid user'));
		}
		if ($this->User->delete()) {
			$this->Session->setFlash(__('User deleted'));
			$this->redirect(array('action' => 'index'));
		}
		$this->Session->setFlash(__('User was not deleted'));
		$this->redirect(array('action' => 'index'));
	}
}
